查看原文
其他

云原生到现在都没有准确的定义

李佳明 分布式实验室 2022-12-29

Kubernetes仍在不断普及,但贡献力度却有所减弱。我们该如何让更多人理解云原生、参与云原生?

现实难题就在这里:随着系统和团队变得愈发分散,科技行业已经很难用统一的语言表达来顺畅交换意见了。首先,单是开源就足够外行人研究半天,更别提这里还有云原生,云原生领域又涉及几千种具体的产品和技术……从何说起,又该如何解释?

好在KubeCon和CloudNativeCon大会一直在为此而努力,在带来最新、最强技术成果的同时,也不遗余力地为高度分散的志愿者社区们准备了发展建议。就让我们借此机会好好回顾一下云原生和Kubernetes的发展历程,并展望它们会对整个技术行业产生怎样的影响。


 1 
定义云原生


在今年5月的KubeCon欧洲大会上,我们曾对云原生意见领袖们做过现场调查,特别是如何定义云原生。不同的与会者各有理解角度,有人看重分布式和可扩展属性,也有人关注不可变、声明性和临时性的微服务与容器设计。

来自Fiberplane的Elena Boroda认为,云原生体现的是组织如何在技术层面保障访问速度和可靠性。“云原生表达的是剔除掉硬件或软件部署需求,借此加快应用程序的部署速度。

亚马逊云科技的Julie Gunderson则将云原生视为“云上的开发与工程”,并劝告各团队不要太纠结于“原生”这个部分,因为真正“云生云长”的业务其实很少。Syntasso的Paula Kennedy对此表示赞同,强调云原生体现的不是在云端构建,而是让企业能最大限度以云的方式进行构建,借此保证“应用程序具备可扩展性和弹性,且与运行所处的硬件保持解耦”。SUSE的Divya Mohan补充称,每一家云服务商都应该提供安全可靠的云原生实现平台。

云原生之所以难以明确定义,一方面跟它的技术特性有关,另一方面也跟人员和流程有关。云原生技术的核心劲力,在于组织所采用的云原生思维方式。正如CloudNativePG的Gabriele Bartolini所说,这一切都需要发生在DevOps文化背景之下。

Container Solutions的Pini Reznik也提醒道,“大多数人说起云原生时,实际所指的都是容器、微服务和动态编排,但其含义其实远不止于此。云原生还体现在组织变革、敏捷流程、协作文化和正确预算等层面。所有这些,共同让企业得以更快地为客户提供价值、创造更好的产品。而如果某些因素有所冲突,那么技术将不可避免地走向失败。”

正如VMware的Dawn Foster所说,云原生思维方式往往也被表述成“云优先设计”。不同于直接迁移、直接上云的粗暴方式,组织制定的云原生策略会决定由谁、何时、为什么和具体迁移架构中的哪些部分。

最后,Aqua Security的Anaïs Urlichs提醒我们,以Kubernetes等开源软件为基础的云原生也代表着跨社区的协作机会。毕竟没有单一哪种产品能占据统治优势,大多数企业可能需要几十种产品来构成自己的云原生堆栈,这也让云原生生态系统必然拥有可持续性。

为了进一步增强包容性,云原生计算基金会的执行董事Priyanka Sharma甚至认为开源社区中的贡献者也属于“云原生”。

归根结底,云原生到底是好是坏、如何运用,还是要由采用者自行决定。因此,来自思科的Michael Chenetz就总会询问客户:对你来说,云原生意味着什么?在讨论云原生之前,必须先明确你是怎么理解这个概念的。


 2 
云原生定义的混乱,源自定义Kubernetes的需求


正如文章开头所说,我们得先找到统一的语言表达,之后才能真正开始讨论。而对云原生的定义,往往发生在CTO的办公室里。

Catherine Paganini是CNCF毕业项目Service Mesh Linkerd的营销主管。尽管拥有技术营销背景,但她发现自己很难理解云原生这个术语到底在说什么。

“我们的技术团队会尝试做出解释,但他们总是假设我拥有深厚的技术背景。可我没有,所以面对这些技术含量过高的说明,我真的无法理解。所以我买了一本计算机科学入门书,开始学习基础知识。之后又弄了一本分布式系统教科书,直到这时我才略微找到点感觉。这就是非技术人员在讨论云原生时的典型困境——如果不积累到这一步,就没办法认识云原生的真面目。

技术网站The New Stack的实际经历也能佐证Paganini的感受。该网站首次提及Kubernetes的时间是2014年,但Paganini直到2019年才为非技术受众写出第一篇介绍文章,帮他们理解Kubernetes和云计算。

三年之后,Paganini开始进一步探索如何定义云原生。云原生计算基金会发布了云原生词汇表,而Paganini作为维护者之一,表示该项目旨在满足社区提出的三大需求:

  1. 由受信、供应商中立且由社区驱动的来源提供定义。“当大家在谷歌上搜索云原生术语时,看到的往往是供应商提出的定义。”在她看来,这类定义往往存在产品偏见,而且谷歌上的词条也往往比较陈旧。

  2. 确保非技术人员也能看懂。云原生转型成本高昂,往往需要投入数千万美元。领导团队必须理解什么是云原生,才能自上而下建立并传达有效战略。“但云原生内容主要是为技术受众编写的,缺乏技术背景的人们很难理解。”特别是销售和营销人士,经常被隔离在技术定义的门槛之外。

  3. 良好的多语种云原生内容。英语的主导地位一直是开源贡献的一大障碍。她表示,“大多数云原生内容都是英文版本,但绝大多数受其影响的则并非以英语为母语。光是理解这些复杂的概念已经很难了,更别说还要跨语种。”

云原生词汇表项目就是为了满足这些需求而生。Paganini希望“用它来帮助大家理解云原生、或进一步指导他人,无论各位是刚接触云原生的新手,还是经验丰富的工程师。”

云原生词汇表一年前刚刚推出,但现在已经被翻译为英文、韩文、西班牙语、意大利语、葡萄牙语、简体中文、孟加拉语、印地语等多个版本

那如何让这个词汇表项目更进一步?这是个活生生的开源项目,需要的当然是更多贡献者和翻译者喽!


 3 
推动规模学习,促进Kubernetes增长


Kubernetes并未能代表云原生,但它肯定是目前体量最大的CNCF开源项目,在全球范围内已经拥有560万开发者用户。单单过去一年,Kubernetes就迎来170万新用户。但开源社区的繁荣不能只靠大量用户,更需要充足的贡献者。

随着越来越多技术堆栈依赖于Kubernetes编排,Kubernetes项目乃至整个云原生社区的命运,将由接下来能否继续吸引技术与非技术贡献者而决定。也正因为如此,社区才加倍重视大规模培训的重要意义。

Veeam KastenIO公司技术人员Le Tran在上周的KubeCon大会上表示,“总体来讲,云原生技术、特别是Kubernetes,属于那种不太适合初学者的议题。

她在演讲中强调,“作为开源社区,我们应该伸出援助之手,通过开放式的学习工具和平台为潜在的参与者搭建桥梁”,即通过更多方式迎接那些自主加入云原生世界的新成员。

Tran本人来自底特律的汽车行业,约一年前刚刚接触Kubernetes。她坦言,“当时的我对Kubernetes一无所知、对容器技术闻所未闻、对网络传输满脸问号,我连GoLang是什么都没听过。总之,我感觉自己踏入了一个自己完全陌生的新世界。”

因此Tran跟每位新手一样,决定在谷歌上搜索自学教程。她说自己现在“已经能够上手”,而且最近开始学习验证和授权方面的技术。但这已经花掉了她一年时间,而且还有很多很多东西要学。

跟很多缺少科班教育背景的朋友一样,Tran说最让她头痛的就是学习资源似乎无穷无尽、令人绝望。“从好的方面讲,我们一加入新社区就有那么多材料可以参考,这当然不错。但另一方面,如果是像我这样的新手,那面对浩如烟海的资料时根本不知道该从哪里看起。”类似的情况也已经影响到了开源社区,导致新人们弄不清该从何处开始第一次贡献。

所以如果Kubernetes乃至整个云原生和开源社区想要继续保持增长,就必须投入资源和精力,认真积累起高质量的支持文档、入门指南和演示材料。

Tran在主题演讲的最后总结道,“我们需要携起手来,一共在技术与非技术两个世界之间搭建桥梁,帮助更多像我这样身陷迷茫的学习者们找到前进的方向。”


推荐阅读:


Kubernetes已经不是新鲜技术了,其强大的功能目前已经得到了各个行业的认可,各个公司已经或正计划引进Kubernetes,但是Kubernetes公认的上手难,为了方便学习,我最近整理了一份《Kubernetes入门与实践》指南,分享给你,和你一起快速上手Kubernetes,扫描下方二维码回复『指南』,领取材料。

扫码领取资料☝️

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存